import { Message } from 'element-ui'
import api from '../../../http/api'
import router from '../../router/index'

export default {
    // 开启命名空间
    namespaced: true,
    state: {
        users: [],
    },
    mutations: {
        //用户列表
        setUsers(state, data) {
            state.users = data
        },
        //左边菜单导航
        setmenus(state, data) {
            state.menus = data
        },
        //角色管理
        setroles(state, data) {
            state.roles = data
        },
        //添加用户管理
        setaddusers(state, data) {
            state.addusers = data
        },
        //用户状态管理
        setstate(state, data) {
            state.state = data
        },
        //查询id
        setidid(state, data) {
            state.idid = data
        },
        //点击删除
        setdelete(state, data) {
            state.delete = data
        },
        //分配用户角色
        setidrole(state, data) {
            state.idrole = data
        },
        //数据统计
        setreports(state, data) {
            state.reports = data
        },

    },
    actions: {
        // 登录请求
        //async是.then和.catch的升级版
        //每一个action的方法都有两个参数，第一个是store，第二个是请求的参数，
        //store可以解构为commit dispatch
        //params代表一个对象，因为只能传两个参数，所以用params来包含post传参的参数
        async login(_, params) {
            let res = await api.login(params)
            if (res.meta.status === 200) {
                // 请求成功 存用户 跳转路由 提示用户
                localStorage.setItem('user', JSON.stringify(res.data))
                localStorage.setItem('token', res.data.token)
                Message.success('登录成功')
                router.push('/')
            } else {
                Message.error(res.meta.msg)
            }
        },

        // 用户数据请求，commit解构而来
        async getUsers({ commit }, params) {
            let res = await api.getUsers(params)
            console.log(res)
            if (res.meta.status === 200) {
                // Message.success(res.meta.msg)
                commit('setUsers', res.data)
            } else {
                Message.error(res.meta.msg)
            }
        },

        //左边导航请求
        async getmenus({ commit }, params) {
            let res = await api.getmenus(params)
            if (res.meta.status === 200) {
                console.log(res)
                // Message.success(res.meta.msg)
                commit('setmenus', res.data)
            } else {
                Message.error(res.meta.msg)
            }
        },

        //添加用户请求
        async getaddusers({ commit }, params) {

            let res = await api.getaddusers(params)
            if (res.meta.status === 201) {
                // console.log(res)
                Message.success(res.meta.msg)
                commit('setaddusers', res.data)
            } else {
                // Message.error(res.meta.msg)
            }
        },
        //修改用户状态
        async getstate({ commit }, params) {
            let res = await api.getstate(params)
            if (res.meta.status === 200) {
                // console.log(res)
                Message.success(res.meta.msg)
                commit('setstate', res.data)
            } else {
                Message.error(res.meta.msg)
            }
        },
        //查询参数
        async getidid({ commit }, params) {
            let res = await api.getidid(params)
            if (res.meta.status === 200) {
                console.log(res)
                Message.success(res.meta.msg)
                commit('setidid', res.data)
            } else {
                Message.error(res.meta.msg)
            }
        },
        //点击删除
        async getdelete({ commit }, params) {
            let res = await api.getdelete(params)
            if (res.meta.status === 200) {
                console.log(res)
                Message.success(res.meta.msg)
                // location.reload() 删除之后自动刷新页面，但是会屏蔽掉提示框
                commit('setdelete', res.data)
            } else {
                Message.error(res.meta.msg)
            }

        },
        //角色列表
        async getroles({ commit }, params) {
            let res = await api.getroles(params)
            if (res.meta.status === 200) {
                console.log(res)
                Message.success(res.meta.msg)
                // location.reload() 删除之后自动刷新页面，但是会屏蔽掉提示框
                commit('setroles', res.data)
            } else {
                Message.error(res.meta.msg)
            }

        },
        //分配用户角色
        async getidrole({ commit }, params) {
            let res = await api.getidrole(params)
            if (res.meta.status === 200) {
                // console.log(res)
                Message.success(res.meta.msg)
                // location.reload() 删除之后自动刷新页面，但是会屏蔽掉提示框
                commit('setidrole', res.data)
            } else {
                Message.error(res.meta.msg)
            }

        },
        //数据统计
        async getreports({ commit }, params) {
            let res = await api.getreports(params)
            if (res.meta.status === 200) {
                console.log(res)
                Message.success(res.meta.msg)
                // location.reload() 删除之后自动刷新页面，但是会屏蔽掉提示框
                commit('setreports', res.data)
            } else {
                Message.error(res.meta.msg)
            }

        },

    },
}
